# 导入Flask类
from flask import Flask, request, render_template
from datetime import datetime

# 使用Flask创建app对象
# __name__是python中的一个特殊变量，它指向当前模块，即app.py
# 1、出现bug，它可以帮我们快速定位
# 2、对于寻找模板文件，有一个相对路径，就是当前模块所在的目录
# 3、对于寻找静态文件，有一个相对路径，就是当前模块所在的目录
app = Flask(__name__)

# @app.route('/index')
# def index():
#   return 'index'


class User:
    def __init__(self, username, password):
        self.username = username
        self.password = password

def datetime_format(value, format='%Y-%m-%d %H:%M:%S'):
  return value.strftime(format)

app.add_template_filter(datetime_format, 'dformat')

# 路径变量
@app.route('/user/<username>/<password>')
def show_user_profile(username, password):
    return f'User：{username}, password：{password}'


# 查询字符串
@app.route('/user/list')
def get_user_list():
    username = request.args.get('username')
    password = request.args.get('password')
    return f'User: {username}, password: {password}'


# 返回模板
@app.route('/')
def index():
    return render_template('index.html')


# 博客详情页面
@app.route('/blog_detail/<blog_id>')
def blog_detail(blog_id):
    user = User(username='zhangsan', password='123456')
    person = {
        'username': 'lisi',
        'password': '123456'
    }
    return render_template('blog_detail.html', user=user, person=person, blog_id=blog_id)

@app.route('/filter')
def filter():
    user = User(username='zhangsan', password='123456')
    time = datetime.now()
    return render_template('filter.html', user=user, time=time)


@app.route('/control')
def control():
    age = 20
    books = [
        {
            'name': '三国演义',
            'author': '罗贯中'
        },
        {
            'name': '西游记',
            'author': '吴承恩'
        },
        {
            'name': '红楼梦',
            'author': '曹雪芹'
        },
        {
            'name': '水浒传',
            'author': '施耐庵'
        }
    ]
    return render_template('control.html', age=age, books=books)


@app.route('/child1')
def template_extend():
    return render_template('child1.html')

@app.route('/static_asset')
def static_asset():
    return render_template('static.html')


# 当这个模块是作为主入口模块的话，下面的条件就成立，会运行app.run()方法，启动服务器
if __name__ == '__main__':
    app.run(port=9000, debug=True, host='0.0.0.0')